"""
  filename      : roc_plot
  author        : 13105
  date          : 2025/11/14
  Description   : 
"""
import matplotlib.pyplot as plt
import numpy as np

# 模拟训练轮次（根据日志大致划分阶段）
epochs = np.arange(1, len([0.395, 0.435, 0.487]) + 1)
# 各阶段的最大ROC（性能）
roc_scores = [0.395, 0.435, 0.487]
# 各阶段的平均推理时间（ms/batch）
run_times = [3.27, 1.95, 1.85]

# 创建画布
fig, ax1 = plt.subplots(figsize=(10, 6))

# 绘制ROC性能曲线（左轴）
color = 'tab:red'
ax1.set_xlabel('训练阶段')
ax1.set_ylabel('最大ROC（异常检测性能）', color=color)
ax1.plot(epochs, roc_scores, marker='o', color=color, label='最大ROC')
ax1.tick_params(axis='y', labelcolor=color)

# 创建右轴，绘制推理时间曲线
ax2 = ax1.twinx()
color = 'tab:blue'
ax2.set_ylabel('平均推理时间（ms/batch）', color=color)
ax2.plot(epochs, run_times, marker='s', color=color, label='推理时间')
ax2.tick_params(axis='y', labelcolor=color)

# 添加图例与标题
fig.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))
plt.title('模型训练性能与推理时间趋势')

# 阶段标注（对应日志中的性能节点）
ax1.set_xticks(epochs)
ax1.set_xticklabels(['初期', '中期', '后期'])

plt.tight_layout()
plt.show()